#ifndef __LEDD_H
#define __LEDD_H


#include <rtdef.h>
#include <rtthread.h>
#include "cpuHc32f460.h"
#include <stdio.h>
#include "hc32f460.h"
#include "hc32_ll_tmra.h"
//#include "hc32f460_gpio.h"
#include "hc32_ll_gpio.h"
#include "MQ.h"
#include "anv_leaks.h"

#define LIGHT_RUN_OPEN              GPIO_ResetPins(GPIO_PORT_B,GPIO_PIN_15)       // 运行灯开关
#define LIGHT_RUN_STOP				GPIO_SetPins(GPIO_PORT_B,GPIO_PIN_15)
#define LIGHT_RUN_TOGGLE			GPIO_TogglePins(GPIO_PORT_B,GPIO_PIN_15)

#define LIGHT_PWR_OPEN              GPIO_SetPins(GPIO_PORT_D,GPIO_PIN_08)       // 电源灯开关
#define LIGHT_PWR_STOP				GPIO_ResetPins(GPIO_PORT_D,GPIO_PIN_08) 
#define LIGHT_PWR_TOGGLE			GPIO_TogglePins(GPIO_PORT_D,GPIO_PIN_08)
                                                                                              
#define WARN_ALARMR_ON              GPIO_ResetPins(GPIO_PORT_C,GPIO_PIN_01)        //告警灯,红灯
#define WARN_ALARMR_OFF             GPIO_SetPins(GPIO_PORT_C,GPIO_PIN_01)
#define WARN_ALARMR_TOGGLE          GPIO_TogglePins(GPIO_PORT_C,GPIO_PIN_01)

#define WARN_ALARMY_ON              GPIO_ResetPins(GPIO_PORT_C,GPIO_PIN_00)        //告警灯,黄灯
#define WARN_ALARMY_OFF             GPIO_SetPins(GPIO_PORT_C,GPIO_PIN_00)
#define WARN_ALARMY_TOGGLE          GPIO_TogglePins(GPIO_PORT_C,GPIO_PIN_00)
                                                                                            
#define LIGHT_COMM_OPEN             GPIO_ResetPins(GPIO_PORT_D, GPIO_PIN_10)	  // 通讯灯开关, 上行灯
#define LIGHT_COMM_STOP             GPIO_SetPins(GPIO_PORT_D, GPIO_PIN_10) 
#define LIGHT_COMM_TOGGLE		    GPIO_TogglePins(GPIO_PORT_D,GPIO_PIN_10)
#define LIGHT_COMM_GET		        GPIO_ReadOutputPins(GPIO_PORT_D,GPIO_PIN_10)                       
                                                                                        
#define LIGHT_COMMDOWN_OPEN         GPIO_ResetPins(GPIO_PORT_D, GPIO_PIN_09)	  // 通讯灯开关, 下行灯
#define LIGHT_COMMDOWN_STOP         GPIO_SetPins(GPIO_PORT_D, GPIO_PIN_09) 
#define LIGHT_COMMDOWN_TOGGLE       GPIO_TogglePins(GPIO_PORT_D,GPIO_PIN_09)
#define LIGHT_COMMDOWN_GET		    GPIO_ReadOutputPins(GPIO_PORT_D,GPIO_PIN_09) 
                                                                                        
#define WARN_STAGR_ON               GPIO_ResetPins(GPIO_PORT_C,GPIO_PIN_03)        //告警灯,红灯
#define WARN_STAGR_OFF              GPIO_SetPins(GPIO_PORT_C,GPIO_PIN_03)
#define WARN_STAGR_TOGGLE		    GPIO_TogglePins(GPIO_PORT_C,GPIO_PIN_03)
//  
#define WARN_STAGG_ON               GPIO_ResetPins(GPIO_PORT_C,GPIO_PIN_02)        //告警灯，绿灯
#define WARN_STAGG_OFF              GPIO_SetPins(GPIO_PORT_C,GPIO_PIN_02)
#define WARN_STAGG_TOGGLE		    GPIO_TogglePins(GPIO_PORT_C,GPIO_PIN_02)          

extern void led_thread_entry(void *parameter);
void Led_gpio_device_unregister(void);
int Led_gpio_device_register(void);

typedef struct my_gpio_device
{
    struct rt_device parent;    // 继承自 RT-Thread 设备基类
}gpio_device;

#endif